'\" t
.\" Copyright (c) 1990, 1991 The Regents of the University of California.
.\" and Copyright (C) 2021 Michael Kerrisk <mtk.manpages@gmail.com>
.\" All rights reserved.
.\"
.\" This code is derived from software contributed to Berkeley by
.\" Chris Torek and the American National Standards Committee X3,
.\" on Information Processing Systems.
.\"
.\" SPDX-License-Identifier: BSD-4-Clause-UC
.\"
.\" Converted for Linux, Mon Nov 29 14:24:40 1993, faith@cs.unc.edu
.\" Added remark on EBADF for fileno, aeb, 2001-03-22
.\"
.TH fileno 3 2024-05-02 "Linux man-pages 6.9.1"
.SH NAME
fileno \- obtain file descriptor of a stdio stream
.SH LIBRARY
Standard C library
.RI ( libc ", " \-lc )
.SH SYNOPSIS
.nf
.B #include <stdio.h>
.P
.BI "int fileno(FILE *" stream );
.fi
.P
.RS -4
Feature Test Macro Requirements for glibc (see
.BR feature_test_macros (7)):
.RE
.P
.BR fileno ():
.nf
    _POSIX_C_SOURCE
.fi
.SH DESCRIPTION
The function
.BR fileno ()
examines the argument
.I stream
and returns the integer file descriptor used to implement this stream.
The file descriptor is still owned by
.I stream
and will be closed when
.BR fclose (3)
is called.
Duplicate the file descriptor with
.BR dup (2)
before passing it to code that might close it.
.P
For the nonlocking counterpart, see
.BR unlocked_stdio (3).
.SH RETURN VALUE
On success,
.BR fileno ()
returns the file descriptor associated with
.IR stream .
On failure, \-1 is returned and
.I errno
is set to indicate the error.
.SH ERRORS
.TP
.B EBADF
.I stream
is not associated with a file.
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
.TS
allbox;
lbx lb lb
l l l.
Interface	Attribute	Value
T{
.na
.nh
.BR fileno ()
T}	Thread safety	MT-Safe
.TE
.SH STANDARDS
POSIX.1-2008.
.SH HISTORY
POSIX.1-2001.
.SH SEE ALSO
.BR open (2),
.BR fdopen (3),
.BR stdio (3),
.BR unlocked_stdio (3)
